Embodiments of the inventive subject matter generally relate to the field of computer architecture, and, more particularly, to using non-volatile random access memory for asynchronous persistent stores.
For most of the history of computing, an important distinction was made between volatile and non-volatile memory. Volatile memory, such as the type that is generally used for random access memory (RAM), typically has lower access and write times than non-volatile memory. Volatile memory also loses the data stored in it when it is no longer supplied with power. Non-volatile memory, such as hard drives, has longer access and write times, but generally does not lose data when power is lost.
In recent years, the distinction between these two types of memory has begun to be eliminated by the increased usage of non-volatile RAM. Although non-volatile RAM has existed in some forms, such as the BIOS in most computers, the amount of storage was generally small and had limited applications. Availability of larger capacity battery-backed RAM and new RAM technologies, such as flash-backed dynamic RAM and ferroelectric RAM, provide similar access and write times to RAM while not losing stored data on power loss.
One application for non-volatile RAM is in high performance computing, such as web servers and database servers. Optimizations can be made in these situations by keeping frequently accessed data in RAM, instead of reading and writing it to the hard drive. In normal implementations, when power is lost, any data that is stored in RAM and not written to the hard disk is also lost. Using non-volatile RAM in these situations can prevent this, allowing the data to maintain consistency even after power failures, while having significantly better performance than non-volatile memory like hard drives.